using DG.Tweening;
using UnityEngine;

public class EnemyState_金池_飞升 : EnemyStateBase_幽魂
{
	private GameObject _GO_飞升光环;

	private SpriteRenderer _SR_功德金光;

	private SpriteRenderer _SR_光圈;

	private Color _Co_功德金光;

	private Color _Co_光圈;

	private bool _下次僵尸死亡后返回站立;

	private bool _特效已经关闭;

	private int _死亡僵尸数量;

	private bool _可以生成僵尸;

	private int _已经生成的数量;

	private int _最大生成数量 = 12;

	public override EnemyStateBase_幽魂 Init(C_敌人AI_幽魂 EnemyMono)
	{
		Transform transform = EnemyMono.transform.Find("飞升光环");
		_GO_飞升光环 = transform.gameObject;
		_SR_功德金光 = transform.Find("功德金光").GetComponent<SpriteRenderer>();
		_SR_光圈 = transform.Find("光圈回缩").GetComponent<SpriteRenderer>();
		_Co_功德金光 = _SR_功德金光.color;
		_Co_光圈 = _SR_光圈.color;
		return base.Init(EnemyMono);
	}

	public override void OnEnter()
	{
		_Mono._Ani.Play("飞升");
		_死亡僵尸数量 = 0;
		_Mono._Co2D_自身碰撞器.isTrigger = true;
		_下次僵尸死亡后返回站立 = false;
		_Mono._Is飞升 = true;
		_特效已经关闭 = false;
		_可以生成僵尸 = true;
		_已经生成的数量 = 0;
		_Timer = Random.Range(2f, 4f);
		Color co_功德金光 = _Co_功德金光;
		Color co_光圈 = _Co_光圈;
		co_功德金光.a = 0f;
		co_光圈.a = 0f;
		_SR_功德金光.color = co_功德金光;
		_SR_光圈.color = co_光圈;
		_SR_功德金光.DOFade(_Co_功德金光.a, 1f);
		_SR_光圈.DOFade(_Co_光圈.a, 1f);
		_GO_飞升光环.SetActive(value: true);
	}

	public override void OnExit()
	{
		_Mono._Co2D_自身碰撞器.isTrigger = false;
		_Mono._Is飞升 = false;
		_GO_飞升光环.SetActive(value: false);
	}

	public override void OnUpdate()
	{
		_Timer -= Time.deltaTime;
		if (!(_Timer <= 0f))
		{
			return;
		}
		_Timer = Random.Range(1f, 2.5f);
		if (_下次僵尸死亡后返回站立)
		{
			if (_特效已经关闭)
			{
				_Mono.ChangeState(StateType_Enemy_幽魂.站立);
				return;
			}
			_特效已经关闭 = true;
			_SR_功德金光.DOFade(0f, 1f);
			_SR_光圈.DOFade(0f, 1f);
		}
		else if (_可以生成僵尸)
		{
			_已经生成的数量++;
			if (_已经生成的数量 >= _最大生成数量)
			{
				_可以生成僵尸 = false;
			}
			_Mono._僵尸生成器.F_生成一只僵尸(_Mono.transform, F_小僵尸死亡回调);
		}
	}

	private void F_小僵尸死亡回调()
	{
		_死亡僵尸数量++;
		if (_死亡僵尸数量 >= _最大生成数量)
		{
			_下次僵尸死亡后返回站立 = true;
		}
	}
}
